package cc.rengu.igas.channel.ncqs.core.realize;

import cc.rengu.igas.channel.ncqs.core.model.request.*;
import cc.rengu.igas.channel.ncqs.core.model.response.*;

/**
 * 银联无卡快捷支付服务组件
 */
public interface NcqsService {
    /**
     * 机构签到
     *
     * @param instManageRequest
     * @return
     * @throws Exception
     */
    InstManageResponse instSignIn(InstManageRequest instManageRequest) throws Exception;

    /**
     * 机构签退
     *
     * @param instManageRequest
     * @return
     * @throws Exception
     */
    InstManageResponse instSignOut(InstManageRequest instManageRequest) throws Exception;

    /**
     * 协议支付签约触发短信
     *
     * @param request
     * @return
     * @throws Exception
     */
    AgreePaySignWithSmsAcqResponse agreePaySignWithSms(AgreePaySignWithSmsAcqRequest request) throws Exception;

    /**
     * 直接支付触发短信
     *
     * @param request
     * @return
     * @throws Exception
     */
    ApplyPaySmsAcqResponse applyPaySms(ApplyPaySmsAcqRequest request) throws Exception;

    /**
     * 账户验证
     *
     * @param request
     * @return
     * @throws Exception
     */
    AcctVerifyAcqResponse acctVerify(AcctVerifyAcqRequest request) throws Exception;

    /**
     * 借记转账签约触发短信
     *
     * @param request
     * @return
     * @throws Exception
     */
    DebitAcctSignWithSmsAcqResponse debitAcctSignWithSms(DebitAcctSignWithSmsAcqRequest request) throws Exception;

    /**
     * 协议支付签约
     *
     * @param request
     * @return
     * @throws Exception
     */
    AgreePaySignAcqResponse agreePaySign(AgreePaySignAcqRequest request) throws Exception;

    /**
     * 借记转账签约
     *
     * @param request
     * @return
     * @throws Exception
     */
    DebitAcctSignAcqResponse debitAcctSign(DebitAcctSignAcqRequest request) throws Exception;

    /**
     * 协议支付解约
     *
     * @param request
     * @return
     * @throws Exception
     */
    AgreePaySignRescindAcqResponse agreePaySignRescind(AgreePaySignRescindAcqRequest request) throws Exception;

    /**
     * 借记转账解约
     *
     * @param request
     * @return
     * @throws Exception
     */
    DebitAcctSignRescindAcqResponse debitAcctSignRescind(DebitAcctSignRescindAcqRequest request) throws Exception;

    /**
     * 协议支付
     *
     * @param request
     * @return
     * @throws Exception
     */
    AgreePayAcqResponse agreePay(AgreePayAcqRequest request) throws Exception;

    /**
     * 直接支付
     *
     * @param request
     * @return
     * @throws Exception
     */
    DirectPayAcqResponse directPay(DirectPayAcqRequest request) throws Exception;

    /**
     * 借记转账
     *
     * @param request
     * @return
     * @throws Exception
     */
    DebitTransferAcqResponse debitTransfer(DebitTransferAcqRequest request) throws Exception;

    /**
     * 贷记付款
     *
     * @param request
     * @return
     * @throws Exception
     */
    CreditPayAcqResponse creditPay(CreditPayAcqRequest request) throws Exception;

    /**
     * 退款
     *
     * @param request
     * @return
     * @throws Exception
     */
    RefundAcqResponse refund(RefundAcqRequest request) throws Exception;

    /**
     * 交易状态查询
     *
     * @param request
     * @return
     * @throws Exception
     */
    TransStatQueryAcqResponse transStatQuery(TransStatQueryAcqRequest request) throws Exception;
}
